package cn.antblog.IO;

import javax.swing.filechooser.FileSystemView;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;

/**
 * yangjingyi
 */
public class GetTXTByDisk {

    public static void main(String[] args) {
        File file = new File("F:\\数据库");
        getAllFilePath(file);

        //getDisk();

        //createFileByDisk();

        //getAllFileByDisk();
    }

    /**
     * 获取文件下下的文件
     *
     * @param dir
     */
    private static void getAllFilePath(File dir) {
        File[] files = dir.listFiles();
        for (int i = 0; i < files.length; i++) {
            String name = files[i].getName();
            if (files[i].isDirectory()) { //判断是否是目录
                System.out.println(files[i].getPath());
                boolean b = name.endsWith(".txt");
                if(b){
                    System.out.println("名字：" + name);
                }
                //这里面用了递归的算法
                getAllFilePath(files[i]);
            } else {

                System.out.println(files[i].getPath());
                boolean b = name.endsWith(".txt");
                if(b){
                    System.out.println("名字：" + name);
                }
            }
        }
    }

    /**
     * 获取本地磁盘
     */
    public static void getDisk() {
        //1. 获取本机盘符
        /*File[] roots = File.listRoots();
        for (int i = 0; i < roots.length; i++) {
            System.out.print(roots[i].getPath()+"; ");//磁盘路径
            System.out.print(roots[i].getTotalSpace()/1024/1024/1024+"; ");//磁盘总空间大小
            System.out.print(roots[i].getUsableSpace()/1024/1024/1024+"; ");//剩余磁盘空间大小
            System.out.println(roots[i].getFreeSpace()/1024/1024/1024);//剩余磁盘空间大小
        }*/


        //仅获取本地磁盘（除去网络磁盘等）
        File[] roots = File.listRoots();
        FileSystemView sys = FileSystemView.getFileSystemView();
        for (int i = 0; i < roots.length; i++) {
            if (!sys.getSystemTypeDescription(roots[i]).equals("本地磁盘")) {
                continue;
            }
            System.out.println(roots[i].getPath());// 磁盘路径
        }
    }

    /**
     * 在某一次盘创建文件
     */
    public static void createFileByDisk() {
        try {
            File file = new File("F:\\数据库\\2\\3.txt");
            File fileParent = file.getParentFile();//返回的是File类型,可以调用exsit()等方法
            String fileParentPath = file.getParent();//返回的是String类型
            System.out.println("fileParent:" + fileParent);
            System.out.println("fileParentPath:" + fileParentPath);
            if (!fileParent.exists()) {
                fileParent.mkdirs();// 能创建多级目录
            }
            if (!file.exists()) {
                file.createNewFile();
            }
            System.out.println(file);

            String path = file.getPath();
            String absolutePath = file.getAbsolutePath();//得到文件/文件夹的绝对路径
            String getFileName = file.getName();//得到文件/文件夹的名字
            System.out.println("path:" + path);
            System.out.println("absolutePath:" + absolutePath);
            System.out.println("getFileName:" + getFileName);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


    /**
     * 遍历 磁盘下的文件
     */
    public static void getAllFileByDisk() {

        File file = new File("F:\\");
        SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
        System.out.println(file.getTotalSpace() / 1024 / 1024 / 1024);// b-kb-M-G
        if (file.isAbsolute()) { // 判断是否为根目录
            File[] list = file.listFiles(); // 使用数组接收带有完整路径的文件夹
            for (int i = 0; i < list.length; i++) {
                System.out.println(list[i].getPath());
                System.out.println(list[i].getTotalSpace());
                System.out.println(dateFormat.format(list[i].lastModified()));

            }

        }
    }
}